package cn.rxyb.core.io;

import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author YJH
 * @version 1.0
 * @description 文件操作
 * @date 2020/6/27 15:16
 */
public final class FolderUtils {


    /**
     * 创建一个文件夹
     *
     * @param path 文件地址
     * @return
     */
    public static boolean add(String path) {
        File file = FileUtil.isFileFlag(path);
        if (!file.exists()) {
            file.mkdir();
        }
        return true;
    }

    /**
     * 创建一个文件夹
     *
     * @param path  文件地址
     * @return
     */
    public static boolean add(File file) {
        if (!file.exists()) {
            file.mkdir();
        }
        return true;
    }

    // 删除一个文件
    public static boolean del(String path) {
        File file = FileUtil.isFileFlag(path);
        if (file.exists()) {
            file.delete();
            return true;
        }
        return false;
    }

    /**
     * 修改一个文件名称
     *
     * @param path           文件地址
     * @param loadFolderName 文件名称
     * @param newFolderName  新文件名称
     * @return
     */
    public static boolean update(String path, String loadFolderName, String newFolderName) {
        File file = FileUtil.isFileFlag(path + loadFolderName);
        // 判断源目录是否存在
        if (file.exists()) {
            // 重命名
            if (file.renameTo(new File(path + newFolderName))) {
                return true;
            }
        }
        return false;
    }

    /**
     * 获取文件下目录
     *
     * @param path 文件目录
     * @return
     */
    public static List<String> fileNextFolderName(String path) {
        File file = FileUtil.isFileFlag(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            return Arrays.asList(files).stream().map(File::getName).collect(Collectors.toList());
        }
        return null;
    }

    /**
     * 查询文件是否存在
     *
     * @param path 文件路径
     * @return
     */
    public static boolean isExists(String path) {
        File file = FileUtil.isFileFlag(path);
        return file.exists();
    }

    static class FileUtil {

        /**
         * 判断文件是否存在
         *
         * @param path 文件地址
         * @return 文件
         */
        public static File isFileFlag(String path) {
            if (null == path || path.trim().length() == 0) {
                throw new RuntimeException("文件路径不能为空");
            }
            return new File(path);
        }
    }

}
